# -*-coding:utf-8-*-
import pandas as pd
import numpy as np

data = np.random.randint(10, 100, size=8, dtype=np.int64)

# 创建一个series对象，index默认从0开始的数值
s1 = pd.Series(data, index=['一', '二', '三', '四', '五', '六', '七', '八'])

# 转换数据类型
s2 = s1.astype('float64')

# 位置索引，从0开始，不能为负数
print('\033[1;31m 位置索引：\033[0m')
print(s1[0])  # 单个值
print(s1[[0, 1]])  # 类型为series
# 标签索引
print('\033[1;31m 标签索引：\033[0m')
print(s1['一'])
print(s1[['一', '二']])
# 布尔索引
print('\033[1;31m 布尔索引：\033[0m')
print(s1[s1.notnull()])  # s1中不为空的元素组成的series
print(s1[s1 > 50])  # s1中大于50的元素组成的series

# 位置切片，返回的数据区间和slice一样，即[start, stop)
print('\033[1;31m 位置切片：\033[0m')
print(s1[::2])
print(s1[0:2])
# !!!标签切片，返回的数据区间是包含末端的，即[start, stop]
print('\033[1;31m 标签切片：\033[0m')
print(s1['一':'三'])
print(s1['一':'三':2])
# 获取索引，可以修改整个index，但不能通过下标单个修改
print(s1.index)  # Index(['一', '二', '三', '四', '五', '六', '七', '八'], dtype='object')
print(s1.index[0])  # 一，type为str

# 获取值
print(s1.values)  # 返回ndarray类型
print(s1.to_list())  # 返回list类型
for i in s1:
    print(i)  # 迭代获取每个元素
